<!DOCTYPE doctype PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">

<HTML>
  <HEAD>
    <META name="generator" content=
    "HTML Tidy for Java (vers. 2009-12-01), see jtidy.sourceforge.net">

    <TITLE>Debugger: Static Synchronization</TITLE>
    <META http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <LINK rel="stylesheet" type="text/css" href="help/shared/DefaultStyle.css">
  </HEAD>

  <BODY lang="EN-US">
    <H1><A name="plugin"></A>Debugger: Static Synchronization</H1>

    <P>This plugin ensures the static and dynamic listings, byte viewers, etc., all remain
    synchronized.</P>

    <H2>Actions</H2>

    <P>The plugin places a few actions in the <B>Debugger &rarr; Synchronization</B> menu to toggle
    synchronization, and to transfer locations and selections on demand.</P>

    <H3><A name="sync_locations"></A>Synchronize Static and Dynamic Locations</H3>

    <P>This action is always available. When selected, navigation in either listing &mdash;
    including automatic navigation &mdash; automatically navigates to the corresponding location,
    if applicable, in the other. In general, "corresponding location" is computed using information
    about loaded modules reported by the debugger. For the finer details, see the <A href=
    "help/topics/DebuggerStaticMappingPlugin/DebuggerStaticMappingPlugin.html">Static Mappings</A>
    window. When you navigate to a location contained by a module, but there is no corresponding
    static location, a "missing module" appears in the console, offering either to import the
    module or map it to an existing program. If the cursor cannot be mapped, the other listing's
    location is left unchanged. If this does not seem correct. Check your module list and static
    mappings.</P>

    <H3><A name="sync_selections"></A>Synchronize Static and Dynamic Selections</H3>

    <P>This action is always available. When selected, selection in either listing automatically
    selects the corresponding ranges, if applicable, in the other. In general, "corresponding
    ranges" are computed using information about loaded modules reported by the debugger. For the
    finer details, see the <A href=
    "help/topics/DebuggerStaticMappingPlugin/DebuggerStaticMappingPlugin.html">Static Mappings</A>
    window. Portions of the selection which cannot be mapped are omitted.</P>

    <H3><A name="transfer_selection_dynamic_to_static">Transfer Dynamic Selection to
    Static</A></H3>

    <P>This action is available when the dynamic listing has a selection. It maps the current
    dynamic selection to corresponding static ranges and selects those in the static listing. In
    general, "corresponding ranges" are computed using information about loaded modules reported by
    the debugger. For the finer details, see the <A href=
    "help/topics/DebuggerStaticMappingPlugin/DebuggerStaticMappingPlugin.html">Static Mappings</A>
    window. Portions of the selection which cannot be mapped are omitted. If no part of the
    selection is mappable, an error is displayed in the status bar. This can happen if the module
    list is missing, or Ghidra could not find the program for the current module.</P>

    <H3><A name="transfer_selection_static_to_dynamic">Transfer Static Selection to
    Dynamic</A></H3>

    <P>This action is available when the static listing has a selection. It maps the current static
    selection to corresponding dynamic ranges and selects those in the dynamic listing. In general,
    "corresponding ranges" are computed using information about loaded modules reported by the
    debugger. For the finer details, see the <A href=
    "help/topics/DebuggerStaticMappingPlugin/DebuggerStaticMappingPlugin.html">Static Mappings</A>
    window. Portions of the selection which cannot be mapped are omitted. If no part of the
    selection is mappable, an error is displayed in the status bar. This can happen if the module
    list is missing, or Ghidra could not find the program for the current module.</P>

    <H3><A name="open_program"></A>Open Program</H3>

    <P>This action is offered as a resolution whenever a module cannot be automatically opened.
    This typically happens when the module's program database has crash data that can be recovered
    and/or needs a version upgrade. It will attempt to open the program, allowing Ghidra to prompt
    you about the situation.</P>
  </BODY>
</HTML>
